package com.itheima.leetcode.od.b.bf;

/**
 * (B卷,100分)- 非严格递增连续数字序列（Java & JS & Python & C）
 * <p>
 * 题目描述
 * <p>
 * 输入一个字符串仅包含大小写字母和数字，求字符串中包含的最长的非严格递增连续数字序列的长度，（比如12234属于非严格递增连续数字序列）。
 * <p>
 * 输入描述
 * <p>
 * 输入一个字符串仅包含大小写字母和数字，输入的字符串最大不超过255个字符。
 * <p>
 * 输出描述
 * <p>
 * 最长的非严格递增连续数字序列的长度
 * <p>
 * 用例
 * <p>
 * 输入	abc2234019A334bc
 * 输出	4
 * 说明	2234为最长的非严格递增连续数字序列，所以长度为4。
 * <p>
 * 双指针解法
 * <p>
 * 简单的双指针题目。
 * <p>
 * 双指针逻辑如下
 * <p>
 * <p>
 * <p>
 * 当right指针移动遇到字母时，则right前面可能：
 * <p>
 * 是一个空串
 * 是一个符合题意的，且长度right-left的子串，
 * 然后right++，left = right，即left,right同时移到字母后一个位置
 * <p>
 * 当right指针移动遇到数字时，
 * <p>
 * 若此时left、right在同一个位置，则可得一个长度为1的符合要求的子串
 * 若此时left、right不在同一个位置，则检查right指向数值是否大于right-1指向的数值，
 * 若是，则可得一个符合要求的，长度right-left+1的子串，然后right++
 * 若不是，则可得一个符合要求的，长度right-left的子串，然后right++，left = right，即left,right同时移到字母后一个位置
 */
public class LongestNonStrictlyIncreasingContinuousSequence {
    public static void main(String[] args) {
        /*Scanner sc = new Scanner(System.in);

        String s = sc.nextLine();*/

        String s = "abc2234019A334bc";

        System.out.println(getResult(s));
    }

    public static int getResult(String s) {
        int l = 0;
        int r = 0;
        int maxLen = 0;

        while (r < s.length()) {
            char c = s.charAt(r);
            if (c >= '0' && c <= '9') {
                if (l != r) {
                    if (c >= s.charAt(r - 1)) {
                        maxLen = Math.max(maxLen, r - l + 1);
                    } else {
                        maxLen = Math.max(maxLen, r - l);
                        l = r;
                    }
                    r++;
                } else {
                    maxLen = Math.max(maxLen, 1);
                    r++;
                }
            } else {
                maxLen = Math.max(maxLen, r - l);
                r++;
                l = r;
            }
        }

        return maxLen;
    }
}